The present invention relates to the field of computer graphics, and in particular to methods and apparatus for animating computer generated characters. The present invention relates to the field of computer graphics. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
Animation, whether hand-drawn or computer generated, is as much an art as it is a science. Animators must not only make a scene look realistic, but must also convey the appropriate dramatic progression and emotional impact required by the story. This is especially true when animating characters. Characters drive the dramatic progression of the story and establish an emotional connection with the audience.
To create artistically effective character animation, an animator often creates a rough version of a scene and then fine-tunes the character animation to create desired drama and expression of the final scene. This is analogous to a movie director rehearsing a scene with actors to capture the perfect mood for a scene. Because the animator is responsible for the expressiveness of the character animation, it is important that animation tools allow the animator to efficiently fine-tune a character animation and to accurately preview the final form of the animation.
In computer-generated animation, a character's appearance is defined by a three-dimensional computer model. To appear realistic, the computer model of a character is often extremely complex, having millions of surfaces and hundreds or thousands of attributes. Due to the complexity involved with animating such complex models, animation tools often rely on armatures and animation variables to define character animation. An armature is a “stick figure” representing the character's pose, or bodily attitude. By moving the armature segments, which are the “sticks” of the “stick figure,” the armature can be manipulated into a desired pose. As the armature is posed by the animator, the animation tools modify character model so that the bodily attitude of the character roughly mirrors that of the armature.
Animation variables are another way of defining the character animation of a complex character model. An animation variable is a parameter used by a function to modify the character models. Animation variables and their associated functions are used to abstract complicated modifications to a character model to a relatively simple control. For example, an animation variable can define the degree of opening of a character's mouth. In this example, the value of the animation variable is used to determine the position of the many different parts of the character's armature needed to open the characters mouth to the desired degree. The animation tools then modify the character model according to the final posed armature to create a character model with an open mouth.
There are many different approaches for creating a final posed character model from an armature. One prior approach is to associate points on the character model to one or more armature segments. As the armature is moved into a pose, the points associated with each armature segment are kinematically transformed to a new position based on the position of its associated posed armature segments. Because this kinematic transformation can be performed rapidly, animators can preview and fine-tune their animations interactively in real-time or near real-time. However, the animation resulting from kinematic transformations often appears stiff and “puppet-like.”
Further, many characters, such as humans and animals, are deformable soft objects. Kinematic transformations perform particularly poorly with “soft body” objects because they are unable to accurately simulate the deformation of characters. This makes it difficult for characters to bend and bulge realistically as they are posed. Additionally, when kinematic transforms are applied to soft body objects, cracks and seams often develop on the model surface at the character joints. Additional armature segments can be added to simulate bending and bulging surfaces and to smooth out the model surfaces at the joints; however, it is time consuming to create these additional armature segments and the final posed character will often require extensive manual fine-tuning to make the bending and bulging look realistic.
As an alternative to animating soft body characters using kinematic transformations, soft body characters can be animated using a physical simulation approach. In the physical simulation approach, the character model is processed by a material physics simulation to create a physically realistic looking soft body object. This approach is extremely time consuming to set up, often requiring modelers to define not only the exterior of a character, such as the skin, but also the underlying muscles and skeleton. Additionally, processing the character model for each pose created by the animator is extremely computationally expensive, often requiring hours or even days to compute the character model's deformation for a short animated sequence.
Because of the time consuming nature of the animation process, animators often have to create scenes using simplified “stand-in” models and then wait to see the resulting animation with the final character model. Because the animators cannot immediately see the final results of their animation, it is very difficult and inefficient to fine-tune the expressiveness of the character. With this technique, the animator is essentially working blind and can only guess at the final result.
Animated characters also often collide or interact with other objects or characters in a scene. In order to make a collision look realistic, an animated character will need to deformed around the colliding object. Realistic character deformation in response to collisions is essential in animating collisions, especially when the character is a soft body object. Prior character posing techniques such as kinematic transforms cannot realistically deform character models in response to collisions. Instead, animators must manually deform the shape of the character model. Physical simulation techniques can be used to deform character models in response to collisions; however, as discussed above, physical simulation techniques are very time-consuming to set up and computer. Because the time requirements of physical simulation techniques are so high, it is difficult for animators to fine tune collision animations to convey the appropriate dramatic impact.
It is desirable to have a method and system for animating soft body characters that 1) realistically deforms soft body characters in response to armature poses; 2) is easy for animators operate; 3) can be quickly evaluated so that animators can efficiently fine-tune the animation; and 4) allows the animator to preview the final appearance of the character model. It is further desirable for the soft body character to deform realistically from collisions with itself or external objects.